package com.frog.service.friend.api;


import com.frog.service.friend.enums.FriendListTypeEnum;
import com.frog.service.friend.model.PageFriendListRespModel;
import com.frog.service.friend.model.PageFriendReqModel;
import com.frog.service.friend.model.domain.FriendFollowingRelationshipDO;

import java.util.Map;

public interface GroupFriendlyRelationShipsApi {

    /**
     * 根据查询类型获取用户的关系结果集
     * 1、{@code type == followed}            我关注的好友列表(包含我的关注、双向关注用户)
     * 2、{@code type == followedMe}          关注我的好友 (包含关注我的、双向关注用户)
     * 3、{@code type == follwedMutual}       我的双向关注好友
     * 4、{@code type == bestFriended}        我的bestfriend好友 (包含我的bestfriend关注、双向bestfriend关注用户)
     * 5、{@code type == bestFriendedMe}      bestfriend好友有我的 (包含bestfriend关注我的、双向bestfriend关注用户)
     * 6、{@code type == bestFriendedMutual}  我的双向bestfriend关注好友
     * 7、{@code type == blocked}             我拉黑的用户
     * 8、{@code type == blockedMe}           拉黑我的用户
     * 9、{@code type == blockedMutual}       双向拉黑的用户
     */
    PageFriendListRespModel<String> getUserRelationshipsByType(PageFriendReqModel pageFriendReqModel);


    PageFriendListRespModel<FriendFollowingRelationshipDO> getUserRelationshipsDoByType(PageFriendReqModel pageFriendReqModel);


    long getUserRelationshipsCountByType(String userId, FriendListTypeEnum type);

    /**
     * 获取一个用户和多个用户之间的关系信息
     */
    Map<String, FriendFollowingRelationshipDO> getRelationshipsBetweenUsers(String userId, String... friendUserId);

}